package com.rerun.common.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.plugins.Page;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 基础控制器
 *
 * @author Gaojun.Zhou
 * @date 2016年12月27日 上午11:50:57
 */
public class SuperController {

    /**
     * The Logger.
     */
    protected Logger logger = LoggerFactory.getLogger(this.getClass());

/*    *//**
     * The Request.
     *//*
    @Autowired
	protected HttpServletRequest request;

    *//**
     * The Response.
     *//*
    @Autowired
	protected HttpServletResponse response;*/
/*
    *//**
     * The Session.
     *//*
    @Autowired
	protected HttpSession session;

    *//**
     * The Application.
     *//*
    @Autowired
	protected ServletContext application;*/
/*
    *//**
     * 是否为 post 请求
     *
     * @return the boolean
     *//*
    protected boolean isPost() {
		return HttpUtil.isPost(request);
	}


    *//**
     * 是否为 get 请求
     *
     * @return the boolean
     *//*
    protected boolean isGet() {
		return HttpUtil.isGet(request);
	}*/


    /**
     * <p>
     * 获取分页对象
     * </p>
     *
     * @param <T>        the type parameter
     * @param pageNumber the page number
     * @return the page
     */
    protected <T> Page<T> getPage(int pageNumber) {
		return getPage(pageNumber,15);
	}


    /**
     * <p>
     * 获取分页对象
     * </p>
     *
     * @param <T>        the type parameter
     * @param pageNumber the page number
     * @param pageSize   the page size
     * @return page page
     */
    protected <T> Page<T> getPage( int pageNumber,int pageSize) {
		return new Page<T>(pageNumber, pageSize);
	}


    /**
     * 重定向至地址 url
     *
     * @param url 请求地址
     * @return string string
     */
    protected String redirectTo( String url ) {

		StringBuffer rto = new StringBuffer("redirect:");
//		rto.append(request.getContextPath());
		rto.append(url);
		return rto.toString();
	}


    /**
     * 返回 JSON 格式对象
     *
     * @param object 转换对象
     * @return string string
     */
    protected String toJson( Object object ) {
		return JSON.toJSONString(object, SerializerFeature.BrowserCompatible);
	}


    /**
     * 返回 JSON 格式对象
     *
     * @param object 转换对象
     * @param format the format
     * @return string string
     */
    protected String toJson( Object object, String format ) {
		if ( format == null ) {
			return toJson(object);
		}
		return JSON.toJSONStringWithDateFormat(object, format, SerializerFeature.WriteDateUseDateFormat);
	}

}
